package persistencia;

import tipoCliente.TipoClienteDAO;
import tipoCliente.TipoClienteDAOHibernate;
import tipoFornecedor.TipoFornecedorDAO;
import tipoFornecedor.TipoFornecedorDAOHibernate;
import tipoVendedor.TipoVendedorDAO;
import tipoVendedor.TipoVendedorDAOHibernate;
import vendedor.VendedorDAO;
import vendedor.VendedorDAOHibernate;
import cliente.ClienteDAO;
import cliente.ClienteDAOHibernate;
import endereco.EnderecoDAO;
import endereco.EnderecoDAOHibernate;
import fornecedor.FornecedorDAO;
import fornecedor.FornecedorDAOHibernate;

@SuppressWarnings("rawtypes")
public class DAOFactory {

	private static GenericDAOAbstract insantiateDAO(Class daoClass) {

		try {
			return (GenericDAOAbstract) daoClass.newInstance();

		} catch (Exception ex) {
			throw new RuntimeException("Nao conseguiu instanciar o DAO: "
					+ daoClass, ex);
		}
	}

	public static ClienteDAO getClienteDAO() {
		return (ClienteDAO) insantiateDAO(ClienteDAOHibernate.class);
	}
	
	public static TipoClienteDAO getTipoClienteDAO(){
		return (TipoClienteDAO) insantiateDAO(TipoClienteDAOHibernate.class); 
	}
	
	public static VendedorDAO getVendedorDAO(){
		return (VendedorDAO) insantiateDAO(VendedorDAOHibernate.class);
	}
	
	public static EnderecoDAO getEnderecoDAO(){
		return (EnderecoDAO) insantiateDAO(EnderecoDAOHibernate.class); 
	}
	
	public static TipoVendedorDAO getTipoVendedorDAO(){
		return (TipoVendedorDAO) insantiateDAO(TipoVendedorDAOHibernate.class); 
	}
	
	public static FornecedorDAO getFornecedorDAO(){
		return (FornecedorDAO) insantiateDAO(FornecedorDAOHibernate.class);
	}
	
	public static TipoFornecedorDAO geTipoFornecedorDAO(){
		return (TipoFornecedorDAO) insantiateDAO(TipoFornecedorDAOHibernate.class);
	} 

}
